<?php

class Application_Model_DbTable_Beneficiarios extends Zend_Db_Table_Abstract {

    protected $_name = 'beneficiarios';

    public function consultar($codigo) {
        /* $db = Zend_Db_Table::getDefaultAdapter();
          $select = $db->select()
          ->from(array('e' => 'estudiantes'))
          ->where('codigoEstudiante = ?', $codigo);
          return Zend_Db_Table::getDefaultAdapter()->fetchRow($select); */

        $query = $this->fetchRow('codigo_ud = ' . $codigo);
        if (!$query) {
            throw new Exception("No se encontro el código $codigo");
        }
    }

    public function datosSesionFuncionariosAdministrativos($CodigoBeneficiario) {

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('b' => 'beneficiarios'), array('b.codigo_ud', 'b.nombres', 'b.apellidos', 'b.email_personal', 'b.tipo_beneficiario'))
//->join(array('f' => 'funcionarios'), 'b.codigo_beneficiario = f.cod_beneficiario', array())
                ->join(array('f' => 'funcionarios'), 'f.cod_beneficiario = b.codigo_beneficiario', array())
                ->join(array('a' => 'Administrativos'), 'a.cod_beneficiario = f.cod_beneficiario', array('a.cod_facultad'))
                ->where('b.codigo_beneficiario = ?', $CodigoBeneficiario);
        return Zend_Db_Table::getDefaultAdapter()->fetchRow($select);
    }

    public function datosSesionFuncionariosDocentes($CodigoBeneficiario) {

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('b' => 'beneficiarios'), array('b.codigo_ud', 'b.nombres', 'b.apellidos', 'b.email_personal', 'b.tipo_beneficiario'))
                ->join(array('f' => 'funcionarios'), 'f.cod_beneficiario = b.codigo_beneficiario', array())
                ->join(array('d' => 'docentes'), 'd.cod_beneficiario = f.cod_beneficiario', array())
                ->join(array('pc' => 'proyectos_curriculares'), 'pc.codigo_proyecto = d.cod_proyecto', array('pc.cod_facultad'))
                ->where('b.codigo_beneficiario = ?', $CodigoBeneficiario);
        return Zend_Db_Table::getDefaultAdapter()->fetchRow($select);
    }

    public function datosSesionEstudiantes($CodigoBeneficiario) {

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('b' => 'beneficiarios'), array('b.codigo_ud', 'b.nombres', 'b.apellidos', 'b.email_personal', 'b.tipo_beneficiario'))
//->join(array('f' => 'funcionarios'), 'b.codigo_beneficiario = f.cod_beneficiario', array())
                ->join(array('e' => 'estudiantes'), 'e.cod_beneficiario = b.codigo_beneficiario', array())
                ->join(array('pc' => 'proyectos_curriculares'), 'pc.codigo_proyecto = e.cod_proyecto', array('pc.cod_facultad'))
                ->where('b.codigo_beneficiario = ?', $CodigoBeneficiario);
        return Zend_Db_Table::getDefaultAdapter()->fetchRow($select);
    }

    public function existe($filtro) {
        $db = Zend_Db_Table::getDefaultAdapter();

        /*$select = $db->select()
                ->from(array('beneficiarios'), array('count' => 'count(codigo_ud)'))
                ->where('codigo_ud = ?', $filtro);
        $verificar = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);*/

        //if ($verificar == 0) {
            $select = $db->select()
                    ->from(array('beneficiarios'), array('count' => 'count(numero_documento)'))
                    ->where('numero_documento = ?', $filtro);
            $verificar = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);
        //}

        if ($verificar["count"] > 0) {
            return true;
        } else {
            return false;
        }
    }

    public function consultarBeneficiario($filtro) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $result = null;
        if (!empty($filtro)) {
            $select = $db->select()
                    ->from(array('b' => 'beneficiarios'))
                    ->where('b.codigo_ud= ?', $filtro);
            $result = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);

            if (empty($result)) {
                $select = $db->select()
                        ->from(array('b' => 'beneficiarios'))
                        ->where('b.numero_documento= ?', $filtro);
                $result = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);
            }
        }

        return $result;
    }

    public function consultarBeneficiarioEstudiante($filtro) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $result = null;
        if (!empty($filtro)) {
            $select = $db->select()
                    ->from(array('b' => 'beneficiarios'))
                    ->join(array('e' => 'estudiantes'), 'e.cod_beneficiario = b.codigo_beneficiario', array('semestre_actual', 'promedio', 'cod_proyecto', 'valor_matricula'))
                    ->join(array('d' => 'domicilios'), 'd.codigo_domicilio = b.cod_domicilio', array('codigo_domicilio', 'direccion', 'cod_localidad', 'cod_municipio', 'estrato', 'barrio'))
                    ->where("b.tipo_beneficiario= 'estudiante'")
                    ->where('b.codigo_ud= ?', $filtro);

            $result = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);

            if (empty($result)) {
                $select = $db->select()
                        ->from(array('b' => 'beneficiarios'))
                        ->join(array('e' => 'estudiantes'), 'e.cod_beneficiario = b.codigo_beneficiario', array('semestre_actual', 'promedio', 'cod_proyecto', 'valor_matricula'))
                        ->join(array('d' => 'domicilios'), 'd.codigo_domicilio = b.cod_domicilio', array('codigo_domicilio', 'direccion', 'cod_localidad', 'cod_municipio', 'estrato', 'barrio'))
                        ->where("b.tipo_beneficiario= 'estudiante'")
                        ->where('b.numero_documento= ?', $filtro);
                $result = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);
            }
        }

        return $result;
    }

    public function actualizarIDDomicilio($idDomicilio) {
        $data = array('cod_domicilio' => $idDomicilio);
        $this->update($data, 'cod_domicilio = 1');
    }

}

